import axios from "axios";
import router from "@/router";

export const http = axios.create({
  baseURL: "http://localhost:8888",
});

function successRes(res) {
  // 和后端约定：若接口需要权限(即登录后才会获数据)
  // 若用户未登录，则访问该接口；后台的 code 值为 401，表示 「用户没有权限访问本接口」
  if (res?.data?.code === 401) {
    setTimeout(() => {
      router.push("/login");
    }, 0);
  }

  return res.data;
}
function errorRes(res) {
  return Promise.reject(res);
}

// res 的拦截器；后端返回的数据，会经过 successRes (成功的数据走本函数) 和 errorRes (接口报错的数据，走本函数) 函数的拦截(处理)
http.interceptors.response.use(successRes, errorRes);

// 对 request 发送到 服务器之前，进行 拦截
http.interceptors.request.use(
  // config 代指的是 request 的报文
  function (config) {
    // 即任何一个 ajax 请求，发送到 服务器之前，都会在 报文头上 增加一个 authorization 的 key
    config.headers.authorization = localStorage.getItem("token");
    return config;
  },
  function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  }
);
